//
//  VRAccountViewModel.swift
//  Sina_MicoBlog
//
//  Created by Lee on 16/5/14.
//  Copyright © 2016年 Lee.C. All rights reserved.
//
//获取数据,创建一个方法,传一个code过来,和一个闭包,有一个错误的参数.
//先写方法,然后利用工具类的单例来创建请求.//字典的key是字符串来的!
//responseObject转字典以后,然后写一个model方法进行字典转模型.
//写完归档解档的model还有那个字典模型的model以后就进行对拿到的token字典进行字典转模型.
//字典转模型以后,把模型里面的内容存到沙盒里面.我们需要存入到路径,而且这个路径在解档的时候也需要用到,所以搞一个属性出来.******注意,在闭包里面是需要用self的.
//全局一个VRAccount,到时候用到,直接单例创建出来就可以拿到属性了.然后给全局的VRAccount赋值拿到的模型.
//最后回调callback(error),回到Oauth控制器.调用这个方法.
//要搞一个解档的单例出来

import UIKit

class VRAccountViewModel: NSObject {

    //单例
    static let sharedInstance: VRAccountViewModel = VRAccountViewModel()
    
    //账号归档和解档的路径
    let userAccountPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! + "/account.plist"
    
    //全局了账号,到时候拿了单例,就可以拿到模型了
    var userAccount: VRUserAccount?
    
    func loadAccessToken(code: String,callback:(error: NSError?) -> ()){
//    
        
        
        //拿到url
       let urlString = "oauth2/access_token"
        //拿到参数
        let parameters = [
            "client_id": client_id,
            "client_secret": client_secret,
            "grant_type": "authorization_code",
            "code": code,
            "redirect_uri": redirect_uri
        ]
        
    VRNetWorkTool.shareInstance.request(RequestMethod.POST, URLString: urlString, parameters: parameters, success: { (task,responseObject) -> Void in
        //可能转类型失败,这里判断一下,,成功才调
        if let result = responseObject as? [String: AnyObject] {
        //转成功了才字典转模型
            let userAccount = VRUserAccount(dict: result)
            
            //存到沙盒里面.
           NSKeyedArchiver.archiveRootObject(userAccount, toFile: self.userAccountPath)
            //账号赋值给属性
            self.userAccount = userAccount
            //回调控制器完成给的属性
            callback(error: nil)
        }else{
        
        print("字典转模型失败")
        }
        
        
        }) { (task, error) -> Void in
            callback(error: error)
        }
    
    }
    
}
